// 对于axios进行二次封装
import axios from "axios";
import NProgress from "nprogress";
// 引入进度条样式
import "nprogress/nprogress.css";
// start进度条开始 done进度条结束

// 利用axios对象的方法create，创建一个axios实例
// request就是axios 只不过稍微配置一下
const requests = axios.create({
  // 配置对象

  // 基础路径
  baseURL: "/mock",
  // 请求超时时间为5s
  timeout: 5000,
});

// 请求拦截器 在请求发出之前做一些事情
requests.interceptors.request.use((config) => {
  // config:配置对象，其中headers请求头很重要
  // 进度条开始动
  // NProgress.start();
  return config;
});

// 响应拦截器
requests.interceptors.response.use(
  (res) => {
    // 成功的回调函数
    return res.data;
  },
  (error) => {
    // 进度条结束
    // NProgress.done();
    // 失败的回调函数
    return Promise.reject(new Error("fail"));
  }
);

export default requests;
